paint-brush
扫描 260 万个域以查找暴露的 .Env 文件经过@sdcat
9,549 讀數
9,549 讀數

扫描 260 万个域以查找暴露的 .Env 文件

经过 sdcat2022/11/10
Read on Terminal Reader
Read this story w/o Javascript

太長; 讀書

一位软件开发人员扫描了 260 万个域以查找暴露的.env 文件。他发现了 135 个数据库用户和密码、48 个带密码的电子邮件用户帐户、11 个支付提供商(如 Stripe 或 Paypal)的实时凭证、98 个用于不同 API 的秘密令牌和 128 个应用程序秘密。危险的方面是密码和秘密在 .env 文件中是未加密的形式。当 Web 服务器配置错误并且 this.env 文件由 Web 交付时。服务器,任何人都可以。查询此数据。

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - 扫描 260 万个域以查找暴露的 .Env 文件
sdcat HackerNoon profile picture

在我第一次扫描暴露的 .git 目录后,我又扫描了暴露的 .env 文件。在这次扫描中,我发现了 200 多个暴露的 .env 文件。除了无害的配置设置,我还发现了 135 个数据库用户和密码、48 个带密码的电子邮件用户帐户、11 个支付提供商的实时凭证(如 Stripe 或 Paypal)、98 个用于不同 API 的秘密令牌和 128 个应用程序秘密(安全生成会话的秘密ids、CSRF-tokens 和 JWT-tokens)和一些硬编码的管理员凭据。

TLDR :注意部署过程中的错误。切勿将隐藏的 .env 文件公开。

我为什么这样做?

我是 SDCat 一个软件开发人员,有着好奇的头脑,喜欢在引擎盖下到处寻找。在扫描了暴露的 .git 目录后,我决定更深入地研究这个兔子洞。并决定我将检查暴露的 .env 文件。

在这篇文章中,我描述了 .env 文件是什么,我如何扫描域以及一些关于在这些文件中发现什么的统计信息。对这些数据的分析有时会揭示不同服务和帐户的许多凭据。

.env 文件

每个软件都需要一些配置并具有各种设置。对于用户软件,如邮件客户端,这些设置,如电子邮件地址、用户名和密码,在软件第一次启动时需要用户请求。对于在服务器上运行且通常自动安装的软件,用户交互是不可能的。对于某些软件框架,可以通过环境变量指定这些设置,并在名为 .env 的文件中进行配置。 .env 文件是隐藏文件,因此默认情况下您看不到这些文件。

.env 文件示例:

 ENV= "PRODUCTION"
LOG_LEVEL= "INFO"
SMTP_HOST= "email.example.com"
SMTP_PORT= 25
SMTP_USER= "[email protected]"
SMTP_PASS= "SuperSecurePassword2022"
SMTP_TLS= 1
SMTP_CONNECTION_TIMEOUT_SECONDS= 2
DB_HOST= "dbserver.example.com"
DB_DATABASE_NAME= "important_database"
DB_USER= "my-app-db-user"
DB_PASSWORD= "2022SuperVerySecurePassword"
PAYMENT_GATEWAY= "payment.example.com"
PAYMENT_SECRET= "super-secure-payment-api-secret"

注意:我们建议使用比上述示例中提到的密码更安全的密码。

为什么暴露的 .env 文件有趣/危险?

由于几乎每个 Web 应用程序都访问数据库或使用某些 API 进行通信,因此必须将这些凭据传递给应用程序。如果使用 .env 文件完成此操作,则凭据在此文件中以纯文本形式显示。当 Web 服务器配置错误并且此 .env 文件由 Web 服务器交付时,任何人都可以查询此数据。为此,只需使用浏览器访问一个 URL,例如: https://example.com/.env。

危险的方面是密码和机密在 .env 文件中是未加密的形式。

我如何扫描 260 万个域以查找暴露的 .env 文件

获取域

我选择了一个允许DNS区域传输的国家来获取这个国家的所有域。下载完整的区域文件需要一些时间。使用一个简单的 python 脚本,我提取了 NS 记录并从这些记录中提取了域名。

扫描过程

我使用另一个 python 脚本读取域并向http://<domain>/.env发送请求。我还检查了 http://www.<domain>/.env、https://<domain>/.env 和 https://www.<domain>/.env。

忽略 SSL 证书检查很重要。我了解到许多文件是通过 https 找到的,但证书无效。通过忽略无效的 SSL 证书,无论如何都可以访问这些目录。

统计数据

我扫描了 260 万个域名,发现:

  • 201 .env 文件
  • 135 个带密码的数据库用户名
  • 48 个电子邮件帐户凭据
  • 11 次访问支付提供商(如 Stripe 或 Paypal)
  • 98 个不同 API 的 API 密钥(例如信用检查 API)
  • 128 个应用秘密

这些只是主要领域的结果。想象一下如果我们扫描所有子域会发生什么。我毫不怀疑你会在那里找到更多。

如何检查我的域是否受到影响?

您可以使用核心模板扫描您的域和子域,也可以使用scan.nan.io 之类的服务自动检查您的域和子域中是否有暴露的敏感文件。

带走:检查您的服务器和部署以不暴露隐藏的 .env 文件。

也在这里发布